package com.ioftv.controller;

import com.ioftv.common.Result;
import com.ioftv.entity.PlatformConfig;
import com.ioftv.service.PlatformConfigService;
import com.ioftv.util.UserContextUtil;
import com.ioftv.util.RolePermissionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * 大屏配置管理Controller
 * 实现平台标题的获取和更新功能
 */
@RestController
@RequestMapping("/admin")
public class PlatformConfigController {

    @Autowired
    private PlatformConfigService platformConfigService;

    /**
     * 3.1 获取平台标题
     * 接口地址：GET /admin/platform-title
     */
    @GetMapping("/platform-title")
    public Result<Map<String, String>> getPlatformTitle(HttpServletRequest request) {
        // 获取当前用户信息
        Long userId = UserContextUtil.getCurrentUserId(request);
        String username = UserContextUtil.getCurrentUsername(request);
        String role = UserContextUtil.getCurrentUserRole(request);
        
        // 根据用户ID获取配置值，管理员可以看到所有配置，普通用户只能看到自己的配置
        String title;
//        if (RolePermissionUtil.isAdmin(role)) {
//            title = platformConfigService.getConfigValue("platform_title", "互联网可视化平台");
//        } else {
            title = platformConfigService.getConfigValue("platform_title", "互联网可视化平台", userId);
//        }
        
        Map<String, String> data = new HashMap<>();
        data.put("title", title);
        return Result.success(data);
    }

    /**
     * 3.2 更新平台标题
     * 接口地址：POST /admin/platform-title/update
     */
    @PostMapping("/platform-title/update")
    public Result<Void> updatePlatformTitle(@RequestBody Map<String, String> params, HttpServletRequest request) {
        // 获取当前用户信息
        Long userId = UserContextUtil.getCurrentUserId(request);
        String username = UserContextUtil.getCurrentUsername(request);
        String role = UserContextUtil.getCurrentUserRole(request);
        
        String title = params.get("title");
        
        // 参数校验
        if (title == null || title.trim().isEmpty()) {
            return Result.error(1001, "标题不能为空");
        }
        
        if (title.length() > 50) {
            return Result.error(1002, "标题长度超出限制");
        }
        
        // 更新配置，管理员可以更新所有配置，普通用户只能更新自己的配置
        boolean success;
//        if (RolePermissionUtil.isAdmin(role)) {
//            success = platformConfigService.updateConfigValue("platform_title", title.trim());
//        } else {
            success = platformConfigService.updateConfigValue("platform_title", title.trim(), userId);
//        }
        
        if (success) {
            return Result.success(null);
        } else {
            return Result.error("更新失败");
        }
    }
}